/*********************************
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2013-11-18 ------------*
**********************************/

package net.kdh.knieja.dao.klasy;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import net.kdh.knieja.dao.klasy.sqlgenerator.PostSqlGenerator;
import net.kdh.knieja.dao.polaczenie.DaneDostepuEnum;
import net.kdh.knieja.dao.polaczenie.ParametryPolaczenia;
import net.kdh.knieja.model.system.Post;
import net.kdh.knieja.model.wspolne.wyjatki.BladWarstwyDaoWyjatek;

/**
 *
 * @author rz.marcin@gmail.com
 */
public class PostDAO extends KlasaDAO<Post>{

    public PostDAO() {
        super(new PostSqlGenerator());
        ParametryPolaczenia parametry = new ParametryPolaczenia();
        parametry.setDaneDostepu(DaneDostepuEnum.ARTYKULY);
        super.initConnection(parametry);
    }
    
    @Override
    protected List<Post> parseResultSet(ResultSet rs) throws BladWarstwyDaoWyjatek {
        List<Post> lista = new ArrayList<>(0);
        try {
            for(int i = 0; rs.next(); i++) {
                String id_postu, id_artykulu, id_uzytkownika, data_utw, tresc, id_edytowanego_postu;
                boolean usuniety;
                id_postu = rs.getString("id_postu");
                id_artykulu = rs.getString("id_artykulu");
                id_uzytkownika = rs.getString("id_uzytkownika");
                data_utw = rs.getString("data_utw");
                id_edytowanego_postu = rs.getString("id_edytowanego_postu");
                
                usuniety = "1".equals(rs.getString("usuniety")) ? true : false;
                tresc = new String(rs.getBlob("tresc").getBytes(1L, (int)rs.getBlob("tresc").length()));
                
                lista.add(new Post());
                lista.get(i).setIdPostu(id_postu);
                lista.get(i).setIdArtykulu(id_artykulu);
                lista.get(i).setIdAutora(id_uzytkownika);
                lista.get(i).setDataUtworzenia(Timestamp.valueOf(data_utw));
                lista.get(i).setTresc(tresc);
                lista.get(i).setIdEdytowanegoPostu(id_edytowanego_postu);
                lista.get(i).setUsuniety(usuniety);
            }
            rs.close();
        } catch (SQLException ex ) {
            System.out.println("Błąd SQL" + "\n" + ex.getLocalizedMessage());
            throw new BladWarstwyDaoWyjatek("PostDAO.parseResultSet()", ex);
        }
        return lista;
    }

}
